/**
 * Generali Solutions d'assurances - Tous droits rÃ©servÃ©s &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.om.impl;

import java.util.Date;

import fr.generali.accueilclient.client.om.IAdresse;

/**
 * ImplÃ©mentation d'un {@link IAdresse}
 * 
 * @author selrhazala
 */
public class Adresse implements IAdresse, Cloneable {

    /**
     * identifiant de l'adresse
     */
    private String identifiant;

    /**
     * numÃ©ro d'ordre de l'adresse
     */
    private String numOrdre;

    /**
     * code Iris de l'adresse
     */
    private String codeIris;

    /**
     * Date de derniÃ¨re mise Ã  jour de l'adresse
     */
    private Date dateDerniereMaj;

    /**
     * user de derniÃ¨re mise Ã  jour de l'adresse
     */
    private String userDerniereMaj;

    /**
     * Date de npai de l'adresse
     */
    private Date dateNpai;

    /**
     * Date de normalisation de l'adresse
     */
    private Date dateNormalisation;

    /**
     * indicateur de normalisation
     */
    private boolean indicateurNormalisation;

    /**
     * indicateur de forcer adresse
     */
    private boolean forcerAdresse;

    /**
     * Point
     */
    private String pointRemise;

    /**
     * Point gÃ©ographique
     */
    private String pointGeographique;

    /**
     * QualitÃ© de l'occupation : locataire, propriÃ©taire
     */
    private String qualiteOccupation;

    /**
     * type de logement
     */
    private String typeLogement;

    /**
     * fond de commerce
     */
    private String fondCommerce;

    /**
     * NumÃ©ro et nom de la voie
     */
    private String voie;

    /**
     * Lieu dit / BP
     */
    private String boitePostale;

    /**
     * Code postal
     */
    private String codePostal;

    /**
     * Ville
     */
    private String ville;

    /**
     * Code Pays
     */
    private String codePays;

    /**
     * Pays
     */
    private String codePaysLibelle;

    /**
     * L'indicateur d'adresse principale
     */
    private boolean principal;

    /**
     * L'indicateur d'adresse courrier
     */
    private boolean courrier;

    /**
     * L'indicateur si code postal est obbligatoire (si pays=France)
     */
    private boolean codePostalRequired;

    /**
     * La taille max du code postal 5 si France sinon 10
     */
    private Integer codePostalSize;

    /**
     * La taille max de la ville
     */
    private Integer villelSize;

    /**
     * Le nombre de pieces
     */
    private String nbPieces;

    /**
     * La surface
     */
    private String surface;

    /**
     * L'indicateur d'adresse fiscale
     */
    private boolean fiscal;

    // /**
    // * numero de la voie
    // */
    // private String numeroVoie;

    /**
     * top d'indicateur npai
     */
    private boolean topNpai;

    /**
     * motif npai
     */
    private String motifNpai;

    /**
     * motif de modification d'adresse
     */
    private String motifModifAdresse;

    /**
     * {@inheritDoc}
     */
    public String getPointRemise() {
        return pointRemise;
    }

    public void setPointRemise(String pointRemise) {
        this.pointRemise = pointRemise;
    }

    public String getPointGeographique() {
        return pointGeographique;
    }

    public void setPointGeographique(String pointGeographique) {
        this.pointGeographique = pointGeographique;
    }

    public String getQualiteOccupation() {
        return qualiteOccupation;
    }

    public void setQualiteOccupation(String qualiteOccupation) {
        this.qualiteOccupation = qualiteOccupation;
    }

    public String getTypeLogement() {
        return typeLogement;
    }

    public void setTypeLogement(String typeLogement) {
        this.typeLogement = typeLogement;
    }

    public String getFondCommerce() {
        return fondCommerce;
    }

    public void setFondCommerce(String fondCommerce) {
        this.fondCommerce = fondCommerce;
    }

    public String getVoie() {
        return voie;
    }

    public void setVoie(String voie) {
        this.voie = voie;
    }

    public String getBoitePostale() {
        return boitePostale;
    }

    public void setBoitePostale(String boitePostale) {
        this.boitePostale = boitePostale;
    }

    public String getCodePostal() {
        return codePostal;
    }

    public void setCodePostal(String codePostal) {
        this.codePostal = codePostal;
    }

    public String getVille() {
        return ville;
    }

    public void setVille(String ville) {
        this.ville = ville;
    }

    public String getCodePays() {
        return codePays;
    }

    public void setCodePays(String codePays) {
        this.codePays = codePays;
    }

    public String getCodePaysLibelle() {
        return codePaysLibelle;
    }

    public void setCodePaysLibelle(String libelle) {
        this.codePaysLibelle = libelle;
    }

    public boolean isPrincipal() {
        return principal;
    }

    public void setPrincipal(boolean principal) {
        this.principal = principal;
    }

    public boolean isCourrier() {
        return courrier;
    }

    public void setCourrier(boolean courrier) {
        this.courrier = courrier;
    }

    public boolean isFiscal() {
        return fiscal;
    }

    public void setFiscal(boolean fiscal) {
        this.fiscal = fiscal;
    }

    public boolean isCodePostalRequired() {
        return codePostalRequired;
    }

    public void setCodePostalRequired(boolean codePostalRequired) {
        this.codePostalRequired = codePostalRequired;
    }

    public Integer getCodePostalSize() {
        return codePostalSize;
    }

    public void setCodePostalSize(Integer codePostalSize) {
        this.codePostalSize = codePostalSize;
    }

    public Integer getVillelSize() {
        return villelSize;
    }

    public void setVillelSize(Integer villelSize) {
        this.villelSize = villelSize;
    }

    public String getIdentifiant() {
        return identifiant;
    }

    public void setIdentifiant(String identifiant) {
        this.identifiant = identifiant;
    }

    public String getNumOrdre() {
        return numOrdre;
    }

    public void setNumOrdre(String numOrdre) {
        this.numOrdre = numOrdre;
    }

    public String getMotifNpai() {
        return motifNpai;
    }

    public void setMotifNpai(String motifNpai) {
        this.motifNpai = motifNpai;
    }

    /**
     * @return the nbPieces
     */
    public String getNbPieces() {
        return nbPieces;
    }

    /**
     * @param nbPieces the nbPieces to set
     */
    public void setNbPieces(String nbPieces) {
        this.nbPieces = nbPieces;
    }

    /**
     * @return the surface
     */
    public String getSurface() {
        return surface;
    }

    /**
     * @param surface the surface to set
     */
    public void setSurface(String surface) {
        this.surface = surface;
    }

    public String getCodeIris() {
        return codeIris;
    }

    public void setCodeIris(String codeIris) {
        this.codeIris = codeIris;
    }

    /**
     * @return the dateDerniereMaj
     */
    public Date getDateDerniereMaj() {
        return dateDerniereMaj;
    }

    /**
     * @param dateDerniereMaj the dateDerniereMaj to set
     */
    public void setDateDerniereMaj(Date dateDerniereMaj) {
        this.dateDerniereMaj = dateDerniereMaj;
    }

    /**
     * @return the userDerniereMaj
     */
    public String getUserDerniereMaj() {
        return userDerniereMaj;
    }

    /**
     * @param userDerniereMaj the userDerniereMaj to set
     */
    public void setUserDerniereMaj(String userDerniereMaj) {
        this.userDerniereMaj = userDerniereMaj;
    }

    /**
     * @return the dateNpai
     */
    public Date getDateNpai() {
        return dateNpai;
    }

    /**
     * @param dateNpai the dateNpai to set
     */
    public void setDateNpai(Date dateNpai) {
        this.dateNpai = dateNpai;
    }

    /**
     * @return the dateNormalisation
     */
    public Date getDateNormalisation() {
        return dateNormalisation;
    }

    /**
     * @param dateNormalisation the dateNormalisation to set
     */
    public void setDateNormalisation(Date dateNormalisation) {
        this.dateNormalisation = dateNormalisation;
    }

    /**
     * @return the indicateurNormalisation
     */
    public boolean isIndicateurNormalisation() {
        return indicateurNormalisation;
    }

    /**
     * @param indicateurNormalisation the indicateurNormalisation to set
     */
    public void setIndicateurNormalisation(boolean indicateurNormalisation) {
        this.indicateurNormalisation = indicateurNormalisation;
    }

    /**
     * @return the forcerAdresse
     */
    public boolean isForcerAdresse() {
        return forcerAdresse;
    }

    /**
     * @param forcerAdresse the forcerAdresse to set
     */
    public void setForcerAdresse(boolean forcerAdresse) {
        this.forcerAdresse = forcerAdresse;
    }

    /**
     * @return the topNpai
     */
    public boolean isTopNpai() {
        return topNpai;
    }

    /**
     * @param topNpai the topNpai to set
     */
    public void setTopNpai(boolean topNpai) {
        this.topNpai = topNpai;
    }

    /**
     * @return the motifModifAdresse
     */
    public String getMotifModifAdresse() {
        return motifModifAdresse;
    }

    /**
     * @param motifModifAdresse the motifModifAdresse to set
     */
    public void setMotifModifAdresse(String motifModifAdresse) {
        this.motifModifAdresse = motifModifAdresse;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Adresse) {
            final IAdresse adresse = (IAdresse ) obj;
            if (this.numOrdre == adresse.getNumOrdre()
                            || (this.numOrdre != null && this.numOrdre.equals(adresse.getNumOrdre()))) {
                return true;
            }
        }
        return false;

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 31 * hash + (null == this.numOrdre ? 0 : this.numOrdre.hashCode());
        return hash;
    }

    /**
     * @see java.lang.Object#clone() . {@inheritDoc}
     * @throws CloneNotSupportedException exception clone non supporte
     * @return IAdresse
     */
    public IAdresse clone() throws CloneNotSupportedException {

        IAdresse adresse = IAdresse.class.cast(super.clone());

        return adresse;
    }

    /**
     * {@inheritDoc}
     */
    public IAdresse createCloneAdresse() throws CloneNotSupportedException {

        return clone();
    }

}
